The Moving Worlds VRML
2.0 Specification
Draft #1
Syntax Summary (BNF)
April 18, 1996
This section provides a detailed description of each node in VRML 2.0. There is a helpful table of
contents at the top organized functionally. However, the nodes are listed alphabetically. (An
alphabetical Index of Nodes and Fields is also available.)
This document's URL: http://webspace.sgi.com/moving-worlds/spec/BNF.html
This section describes the syntax (grammar) of the Moving Worlds human-readable file format.
This grammar is ambiguous; semantic knowledge of the names and types of fields, eventIns, and
eventOuts for each node type (either builtIn or userDefined using PROTO or EXTERNROTO)
must be used during parsing so that the parser knows which field type is being parsed.
The '#' (0x23) character begins a comment wherever it appears outside of quoted SFString or
MFString fields. The '#' character and all characters until the next carriage-return or newline make
up the comment and are treated as whitespace.
The carriage return (0x0d), newline (0x0a), space (0x20), tab (0x09), and comma (0x2c)
characters are whitespace characters wherever they appear outside of quoted SFString or MFString
fields. Any number of whitespace characters and comments may be used to separate the syntactic
entities of a VRML file.
Please see the Nodes Reference section of the Moving Worlds specification for a description of the
allowed fields, eventIns and eventOuts for all pre-defined node types. Also note that some of the
basic types that will typically be handled by a lexical analyzer (sffloatValue, sftimeValue,
sfint32Value, and sfstringValue) have not been formally specified; please see the Fields Reference
section of the spec for a more complete description of their syntax.
General
- vrmlScene:
- declarations
- declarations:
- declaration
- declaration declarations
- declaration:
- nodeDeclaration
- protoDeclaration
- routeDeclaration
- nodeDeclaration:
- node
- DEF nodeNameId node
- USE nodeNameId
- protoDeclaration:
- proto
- externproto
- proto:
- PROTO nodeTypeId [ interface_declarations ] { vrmlScene }
- interfaceDeclarations:
- interfaceDeclaration
- interfaceDeclaration interfaceDeclarations
- restrictedInterfaceDeclaration:
- eventIn fieldType eventInId
- eventOut fieldType eventOutId
- field fieldType fieldId fieldValue
- interfaceDeclaration:
- restrictedInterfaceDeclaration
- exposedField fieldType fieldId fieldValue
- externproto:
- EXTERNPROTO nodeTypeId [ externInterfaceDeclarations ] mfstringValue
- externInterfaceDeclarations:
- externInterfaceDeclaration
- externInterfaceDeclaration externInterfaceDeclarations
- externInterfaceDeclaration:
- eventIn fieldType eventInId
- eventOut fieldType eventOutId
- field fieldType fieldId
- exposedField fieldType fieldId
- routeDeclaration:
- ROUTE nodeNameId . eventOutId TO nodeNameId . eventInId
Nodes
- node:
- nodeTypeId { nodeGuts }
- Script { scriptGuts }
- nodeGuts:
- nodeGut
- nodeGut nodeGuts
- scriptGuts:
- scriptGut
- scriptGut scriptGuts
- scriptGut:
- nodeGut
- restrictedInterfaceDeclaration
- nodeGut:
- fieldId fieldValue
- fieldId IS fieldId
- eventInId IS eventInId
- eventOutId IS eventOutId
- routeDeclaration
- protoDeclaration
- nodeNameId:
- Id
- nodeTypeId:
- Id
- fieldId:
- Id
- eventInId:
- Id
- eventOutId:
- Id
- Id:
- IdFirstChar
- IdFirstChar IdRestChars
- IdFirstChar:
- Any ISO-10646 character encoded using UTF-8 except: 0x30-0x39, 0x0-0x20, 0x22,
0x23, 0x27, 0x2c, 0x2e, 0x5b, 0x5c, 0x5d, 0x7b, 0x7d.
- IdRestChars:
- Any number of ISO-10646 characters except: 0x0-0x20, 0x22, 0x23, 0x27, 0x2c, 0x2e,
0x5b, 0x5c, 0x5d, 0x7b, 0x7d.
Fields
- fieldType:
- MFColor
- MFFloat
- MFInt32
- MFNode
- MFRotation
- MFString
- MFVec2f
- MFVec3f
- SFBool
- SFColor
- SFFloat
- SFImage
- SFInt32
- SFNode
- SFRotation
- SFString
- SFTime
- SFVec2f
- SFVec3f
- fieldValue:
- sfboolValue
- sfcolorValue
- sffloatValue
- sfimageValue
- sfint32Value
- sfnodeValue
- sfrotationValue
- sfstringValue
- sftimeValue
- sfvec2fValue
- sfvec3fValue
- mfcolorValue
- mffloatValue
- mfint32Value
- mfnodeValue
- mfrotationValue
- mfstringValue
- mfvec2fValue
- mfvec3fValue
- sfboolValue:
- TRUE
- FALSE
- sfcolorValue:
- float float float
- sffloatValue:
- ... floating point number in ANSI C floating point format...
- sfimageValue:
- int32 int32 int32 int32s...
- sfint32Value:
- [0-9]+
- 0x[0-9A-F]+
- sfnodeValue:
- nodeDeclaration
- NULL
- sfrotationValue:
- float float float float
- sfstringValue:
- ".*" ... double-quotes must be \", backslashes must be \\...
- sftimeValue:
- ... double-precision number in ANSI C floating point format...
- sfvec2fValue:
- float float
- sfvec3fValue:
- float float float
- mfcolorValue:
- sfcolorValue
- [ ]
- [ sfcolorValues ]
- sfcolorValues:
- sfcolorValue
- sfcolorValue sfcolorValues
- mffloatValue:
- sffloatValue
- [ ]
- [ sffloatValues ]
- sffloatValues:
- sffloatValue
- sffloatValue sffloatValues
- mfint32Value:
- sfint32Value
- [ ]
- [ sfint32Values ]
- sfint32Values:
- sfint32Value
- sfint32Value sfint32Values
- mfnodeValue:
- nodeDeclaration
- [ ]
- [ nodeDeclarations ]
- nodeDeclarations:
- nodeDeclaration
- nodeDeclaration nodeDeclarations
- mfrotationValue:
- sfrotationValue
- [ ]
- [ sfrotationValues ]
- sfrotationValues:
- sfrotationValue
- sfrotationValue sfrotationValues
- mfstringValue:
- sfstringValue
- [ ]
- [ sfstringValues ]
- sfstringValues:
- sfstringValue
- sfstringValue sfstringValues
- mfvec2fValue:
- sfvec2fValue
- [ ]
- [ sfvec2fValues]
- sfvec2fValues:
- sfvec2fValue
- sfvec2fValue sfvec2fValues
- mfvec3fValue:
- sfvec3fValue
- [ ]
- [ sfvec3fValues ]
- sfvec3fValues:
- sfvec3fValue
- sfvec3fValue sfvec3fValues
[ Return to VRML 2.0 Table of Contents ]
-